'''
 数据说明： Pima Indians Diabetes Data Set（皮马印第安人糖尿病数据集）
 根据现有的医疗信息预测5年内皮马印第安人糖尿病发作的概率。
字段说明
数据集共9个字段:
pregnants：怀孕次数
Plasma_glucose_concentration：口服葡萄糖耐量试验中2小时后的血浆葡萄糖浓度
blood_pressure：舒张压，单位:mm Hg
Triceps_skin_fold_thickness：三头肌皮褶厚度，单位：mm
serum_insulin：餐后血清胰岛素，单位:mm
BMI：体重指数（体重（公斤）/ 身高（米）^2）
Diabetes_pedigree_function：糖尿病家系作用
Age：年龄
Target：标签， 0表示不发病，1表示发病
'''
import pandas as pd
import numpy as np
from sklearn.model_selection import GridSearchCV
#竞赛的评价指标为logloss
from sklearn.metrics import log_loss
#svm并不能直接输出各类的概率，所以在这个例子中我们用正确率作为模型预测性能的度量
from sklearn.metrics import accuracy_score
from matplotlib import pyplot
import seaborn as sns
train = pd.read_csv("./FE_pima-indians-diabetes.csv")
print(train.head(8))
#把Xy分开

y_train = train['Target']
X_train = train.drop(["Target"], axis=1)
#线性SVM
'''
from sklearn.svm import LinearSVC
from sklearn.model_selection import GridSearchCV
#超参数调优得出最佳超参数
#设置超参数的搜索范围
Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]
param_grid = {'C': Cs}
#生成学习器的实例
svc = LinearSVC(penalty='l2', loss='hinge')
#生成GridSearchCV实例cv=5
grid = GridSearchCV(svc, param_grid, cv=5, n_jobs=4)

grid.fit(X_train, y_train)
print(grid.best_score_)
print(grid.best_params_)
'''

'''
0.7669270833333334
{'C': 0.01}
'''
#线性svm

from sklearn.svm import SVC
from sklearn.model_selection import GridSearchCV
#设置超参数的搜索范围
Cs = [0.001, 0.01, 0.1, 1, 10, 100, 1000]
param_grid = {'C': Cs}
#生成学习器的实例
grid = GridSearchCV(SVC(kernel='linear'), param_grid, cv=5, n_jobs=4)

grid.fit(X_train, y_train)
print(grid.best_score_)
print(grid.best_params_)
'''
0.7669270833333334
{'C': 0.01}
'''






















